package lucene.server.core.model;

import lombok.Data;
import lucene.server.common.model.Table;

import java.util.ArrayList;
import java.util.List;

@Data
@Table(name = "index_config")
public class IndexConfig {
    /// <summary>
    /// 主键
    /// </summary>
    private String id;

    /// <summary>
    /// 索引名称，索引的目录名称
    /// </summary>
    private String remark;
    /// <summary>
    /// 索引名称，索引的目录名称
    /// </summary>
    private String name;

    /// <summary>
    /// 索引数据目录
    /// </summary>
    private String path;
    /// <summary>
    /// 数据库连接配置名称，即connection的名称
    /// </summary>
    private String conn;
    /// <summary>
    /// 数据库名
    /// </summary>
    private String database;
    /// <summary>
    /// 数据库表名
    /// </summary>
    private String table;

    /// <summary>
    /// 索引存储类型 nio mmap,默认nio
    /// </summary>
    private String fsdType;
    /// <summary>
    /// 索引的字段
    /// </summary>
    private String fields="*";
    /// <summary>
    /// 排除的字段，一般排除LOB字段，存储文件照片等字段
    /// </summary>
    private String excludeFields;
    /// <summary>
    /// 排除的字段，Binary 及LOB字段
    /// </summary>
    private boolean excludeBinary ;
    /// <summary>
    /// 主键字段
    /// </summary>
    private String key;
    /// <summary>
    /// 索引类型：normal或者facet 是否使用Facet todo 还未实现
    /// </summary>
    private String type = "normal";
    /// <summary>
    /// 是否接收从CANAL或者FLINK的CDC数据
    /// </summary>
    private boolean cdc = false;
    /// <summary>
    /// 重建计划任务Cron表达式
    /// </summary>
    private String cron;

    /// <summary>
    /// 字段是否统一转换成驼峰 todo 还未实现
    /// </summary>
    private boolean hump = false;
    /// <summary>
    /// 分词器 simple、 smartcn、whitespace 默认是smartcn
    /// </summary>
    private String analyzer = "smartcn";
    public String getFields() {
        return fields != null ? fields : "*";
    }
    /// <summary>
    /// 字段配置如果没有就用默认的配置，不是每个字段都需要配置
    /// </summary>
    private List<FieldConfig> fieldsConfig = new ArrayList<>();
}
